
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>请说一下服务暴露的流程？ - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>请说一下服务暴露的流程？ - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">概念</div>
          <div class="card-question">在分布式系统中，一个完整的“服务定义”通常包含哪两个核心部分？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">概念</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">一个完整的服务定义包括：1. 接口定义，即服务契约，包含方法名、参数、返回值等；2. 元数据声明，包括服务名称、版本号、依赖关系等信息。</div>
          </div>
          <div class="card-source">来源: 文档中「1. 服务定义」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">服务注册中心在服务暴露流程中扮演了什么关键角色？它通过什么机制来确保服务实例的可用性？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">服务注册中心的关键角色是维护一个动态的服务实例列表。它通过定期的健康检查机制来确保注册的服务实例是可用的，并将不可用的实例从列表中剔除。</div>
          </div>
          <div class="card-source">来源: 文档中「3. 服务注册」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">服务发现的两种主要模式是什么？它们在执行发现操作的主体上有何不同？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">两种主要模式是客户端发现和服务端发现。不同之处在于：在客户端发现模式中，由客户端从服务注册中心查询并选择实例；而在服务端发现模式中，由服务端（或网关）根据请求自动发现并路由到目标服务。</div>
          </div>
          <div class="card-source">来源: 文档中「5. 服务发现」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">流程</div>
          <div class="card-question">在进行远程服务调用时，为了在网络上传输数据，必须执行哪两个关键的数据转换过程？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">流程</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">两个关键过程是序列化与反序列化。客户端在发起调用时会将请求数据序列化为网络传输格式（如JSON），而服务端在收到请求后会进行反序列化以处理数据。</div>
          </div>
          <div class="card-source">来源: 文档中「6. 服务调用」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">策略</div>
          <div class="card-question">为保障分布式系统的稳定性，文档中提到了哪两种常见的服务治理策略来避免服务过载或雪崩？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">策略</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文档中提到的两种常见服务治理策略是熔断（Circuit Breaking）和限流（Rate Limiting），它们用于避免服务因请求过多而过载，或防止故障蔓延导致系统雪崩。</div>
          </div>
          <div class="card-source">来源: 文档中「7. 服务治理」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在服务暴露过程中，保障调用安全性的两种主要技术手段是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">保障安全性的两种主要技术手段是：1. 身份验证，通过 OAuth、JWT 等方式进行身份验证和授权控制；2. 数据加密，通过启用 TLS/SSL 加密来保护传输中的数据安全。</div>
          </div>
          <div class="card-source">来源: 文档中「8. 安全控制」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">在微服务架构中，当同一服务的多个版本需要共存时，系统是如何确保调用到正确版本的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">系统通过服务注册中心和客户端支持版本控制来实现。这确保了客户端在发起调用时，能够根据版本信息找到并调用到正确的服务版本。</div>
          </div>
          <div class="card-source">来源: 文档中「9. 扩展与版本管理」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">策略</div>
          <div class="card-question">什么是“服务降级”？它在系统故障时起到了什么作用？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">策略</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">服务降级是一种策略，指当服务的某些功能不可用时，系统会提供一个降级方案，例如返回默认值或备用响应。它的作用是确保即使在部分功能故障的情况下，系统的核心或部分功能仍然可用。</div>
          </div>
          <div class="card-source">来源: 文档中「10. 服务降级与故障恢复」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">服务暴露时，当一个服务有多个实例运行时，通常会使用什么组件来分发请求？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">当存在多个服务实例时，通常会使用负载均衡器（Load Balancer）。服务注册中心本身可以提供此功能，或者通过专门的网关或反向代理来实现，目的是将请求分发到不同的实例上。</div>
          </div>
          <div class="card-source">来源: 文档中「4. 服务暴露」部分</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
